So all places can use this function instead of parsing things themselves.
GtkCssParser *parser)
{
GtkCssImageWin32 *wimage = GTK_CSS_IMAGE_WIN32 (image);
- char *class;
if (!_gtk_css_parser_try (parser, "-gtk-win32-theme-part", TRUE))
{
return FALSE;
}
- class = _gtk_css_parser_try_name (parser, TRUE);
- if (class == NULL)
- {
- _gtk_css_parser_error (parser,
- "Expected name as first argument to '-gtk-win32-theme-part'");
- return FALSE;
- }
- wimage->theme = gtk_win32_theme_lookup (class);
- g_free (class);
+ wimage->theme = gtk_win32_theme_parse (parser);
+ if (wimage->theme == NULL)
+ return FALSE;
if (! _gtk_css_parser_try (parser, ",", TRUE))
{
GtkCssNumberParseFlags flags)
{
GtkWin32Theme *theme;
- char *theme_class;
GtkCssValue *result;
int id;
return NULL;
}
- theme_class = _gtk_css_parser_try_name (parser, TRUE);
- if (theme_class == NULL)
- {
- _gtk_css_parser_error (parser, "Expected name as first argument to '-gtk-win32-size'");
- return NULL;
- }
+ theme = gtk_win32_theme_parse (parser);
+ if (theme == NULL)
+ return NULL;
if (! _gtk_css_parser_try (parser, ",", TRUE))
{
- g_free (theme_class);
+ gtk_win32_theme_unref (theme);
_gtk_css_parser_error (parser, "Expected ','");
return NULL;
}
if (!_gtk_css_parser_try_int (parser, &id))
{
- g_free (theme_class);
+ gtk_win32_theme_unref (theme);
_gtk_css_parser_error (parser, "Expected an integer ID");
return 0;
}
if (!_gtk_css_parser_try (parser, ")", TRUE))
{
- g_free (theme_class);
+ gtk_win32_theme_unref (theme);
_gtk_css_parser_error (parser, "Expected ')'");
return NULL;
}
- theme = gtk_win32_theme_lookup (theme_class);
- g_free (theme_class);
-
result = gtk_css_win32_size_value_new (1.0, theme, id);
gtk_win32_theme_unref (theme);
#endif /* G_OS_WIN32 */
-GtkWin32Theme *
+static GtkWin32Theme *
gtk_win32_theme_lookup (const char *classname)
{
GtkWin32Theme *theme;
return theme;
}
+GtkWin32Theme *
+gtk_win32_theme_parse (GtkCssParser *parser)
+{
+ GtkWin32Theme *theme;
+ char *class_name;
+
+ class_name = _gtk_css_parser_try_name (parser, TRUE);
+ if (class_name == NULL)
+ {
+ _gtk_css_parser_error (parser, "Expected valid win32 theme name");
+ return NULL;
+ }
+
+ theme = gtk_win32_theme_lookup (class_name);
+ g_free (class_name);
+
+ return theme;
+}
+
cairo_surface_t *
gtk_win32_theme_create_surface (GtkWin32Theme *theme,
int xp_part,
#define GTK_WIN32_THEME_SYMBOLIC_COLOR_NAME "-gtk-win32-color"
-GtkWin32Theme * gtk_win32_theme_lookup (const char *classname);
+GtkWin32Theme * gtk_win32_theme_parse (GtkCssParser *parser);
GtkWin32Theme * gtk_win32_theme_ref (GtkWin32Theme *theme);
void gtk_win32_theme_unref (GtkWin32Theme *theme);